package com.workants.eboleta.presenter;

import java.io.Serializable;

import com.workants.eboleta.IService.IServiceValidar;
import com.workants.eboleta.handler.IViewPrincipalHandler;
import com.workants.eboleta.model.PerfilAdministrativo;
import com.workants.eboleta.model.PerfilAdministrador;
import com.workants.eboleta.model.Usuario;
import com.workants.eboleta.ui.ViewPrincipal;

public class PresenterPrincipal implements IViewPrincipalHandler, Serializable{

	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ViewPrincipal viewPrincipal;
	private IServiceValidar service;

	public PresenterPrincipal(ViewPrincipal viewPrincipal, IServiceValidar service){
		
		this.viewPrincipal = viewPrincipal;
		this.service = service;
		
	}
	
	@Override
	public void validar() {
	
		String codigo = viewPrincipal.getViewPrincipalCuerpo().getFormularioCredencial().getTxtNumeroDePartida().getValue();
		String tipoImpuesto = viewPrincipal.getViewPrincipalCuerpo().getFormularioCredencial().getSeleccionadorImpuesto().getValue().toString();
		
		int rta = service.validar(codigo, tipoImpuesto);
		if (rta == -1){
			viewPrincipal.accesoError(tipoImpuesto, codigo, rta);
		}
		if (rta == 0){
			viewPrincipal.accesoValidoPendiente(tipoImpuesto, codigo, rta);
		}
		if (rta == 1){
			viewPrincipal.accesoValidoProcesado(tipoImpuesto, codigo, rta);
		}
		if (rta == 2){
			viewPrincipal.accesoValido(tipoImpuesto, codigo, rta);
		}
		if (rta == 3){
			viewPrincipal.accesoInexistente(tipoImpuesto, codigo, rta);
		}
		
		
	}

	@Override
	public void login() {
		
		String nombreDeUsuario = viewPrincipal.getViewPrincipalCuerpo().getFomularioIngreso().getTxtNombreDeUsuario().getValue();
		String contrasenia = viewPrincipal.getViewPrincipalCuerpo().getFomularioIngreso().getTxtContrasenia().getValue();
		Usuario usuario = service.login(nombreDeUsuario, contrasenia);
		if (usuario != null){		
			
			if(usuario.getPerfil() instanceof PerfilAdministrativo){
				viewPrincipal.accesoAdministrativo(usuario);
			}
			if(usuario.getPerfil() instanceof PerfilAdministrador){
				viewPrincipal.accesoAdministrador(usuario);
			}
		} else viewPrincipal.accesoIncorrecto();
		
		
	}

}
